package 不定长滑动窗口;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class _3090每个字符最多出现两次的最长子字符串 {
    /**
     * 给你一个字符串 s ，请找出满足每个字符最多出现两次的最长子字符串，并返回该子字符串的 最大 长度。
     * bcbbbcba
     * 
     * @param s 仅由小写英文字母组成。
     * @return
     */
    public static int maximumLengthSubstring(String s) {
        int left = 0;
        int r = 0;
        char[] arr = s.toCharArray();
        int[] hash = new int[26];
        for (int i = 0; i < arr.length; i++) {
            hash[arr[i] - 'a']++;
            while (hash[arr[i] - 'a'] > 2) {
                hash[arr[left++] - 'a']--;
            }
            r = Math.max(r, i - left + 1);
        }
        return r;
    }

    public static void main(String[] args) {
        int maximumLengthSubstring = maximumLengthSubstring("bcbbbcba");
        System.out.println("=====" + maximumLengthSubstring + "=====");
    }
}